package Controller;

import Beans.AdministrativoBean;
import Beans.EmpleadoBean;
import Beans.EncargadoBean;
import Beans.MozoBean;
import DAO.HibernateEmpleadoDAO;
import DTO.AdministrativoDTO;
import DTO.EmpleadoDTO;
import DTO.EncargadoDTO;
import DTO.MozoDTO;
import Model.Administrativo;
import Model.Empleado;
import Model.Encargado;
import Model.Mozo;

public class AdministradorEmpleado {
	private static AdministradorEmpleado instancia;
	private AdministradorEmpleado(){
		
	}
	
	public static AdministradorEmpleado getInstancia(){
		if(instancia==null)
			instancia=new AdministradorEmpleado();
		return instancia;
	}

	public void grabarEmpleado(EmpleadoDTO eDTO) {
		EmpleadoBean eBean=transformDTOtoBean(eDTO);
		HibernateEmpleadoDAO.getInstancia().grabarEmpleado(eBean);
		
	}

	public Empleado transformDTOtoModel(EmpleadoDTO eDTO) {
		Empleado e=null;
		if(eDTO.getClass().getName().contains("AdministrativoDTO")){
			e=new Administrativo(eDTO.getNombre(), eDTO.getClave());
			e.setUsuario(eDTO.getUsuario());
		}
		if(eDTO.getClass().getName().contains("EncargadoDTO")){
			e=new Encargado(eDTO.getNombre(), eDTO.getClave());
			e.setUsuario(eDTO.getUsuario());
			}
		if(eDTO.getClass().getName().contains("MozoDTO")){
			MozoDTO mozodto=(MozoDTO)eDTO;
			e=new Mozo(eDTO.getNombre(), eDTO.getClave(),mozodto.getPorcentajeComision());
			e.setUsuario(eDTO.getUsuario());
		}	
		return e;
	}
	
	public EmpleadoDTO transformModeltoDTO(Empleado e) {
		EmpleadoDTO eDTO=null;
		if(e.getClass().getName().contains("AdministrativoDTO")){
			eDTO=new AdministrativoDTO(e.getNombre(), e.getClave());
			eDTO.setUsuario(e.getUsuario());
		}
			
		if(e.getClass().getName().contains("EncargadoDTO")){
			eDTO=new EncargadoDTO(e.getNombre(), e.getClave());
			eDTO.setUsuario(e.getUsuario());
		}
		if(e.getClass().getName().contains("MozoDTO")){
			Mozo mozodto=(Mozo)e;
			eDTO=new MozoDTO(e.getNombre(), e.getClave(),mozodto.getPorcentajeComision());
			eDTO.setUsuario(e.getUsuario());
		}	
		return eDTO;
	}
	
	public EmpleadoBean transformDTOtoBean(EmpleadoDTO eDTO){
		EmpleadoBean e=null;
		if(eDTO.getClass().getName().contains("AdministrativoDTO")){
			e=new AdministrativoBean(eDTO.getNombre(), eDTO.getClave());
			e.setUsuario(eDTO.getUsuario());
		}
			
		if(eDTO.getClass().getName().contains("EncargadoDTO")){
			e=new EncargadoBean(eDTO.getNombre(), eDTO.getClave());
			e.setUsuario(eDTO.getUsuario());
		}
			
		if(eDTO.getClass().getName().contains("MozoDTO")){
			MozoDTO mozodto=(MozoDTO)eDTO;
			e=new MozoBean(eDTO.getNombre(), eDTO.getClave(),mozodto.getPorcentajeComision());
			e.setUsuario(eDTO.getUsuario());
		}	
		return e;
	}
	
	
	public EmpleadoBean transformModeltoBean(Empleado e){
		EmpleadoBean eb=null;
		if(e.getClass().getName().contains("Administrativo")){
			eb=new AdministrativoBean(e.getNombre(), e.getClave());
			eb.setUsuario(e.getUsuario());
			eb.setIdEmpleado(e.getId());
		}
			
		if(e.getClass().getName().contains("Encargado")){
			eb=new EncargadoBean(e.getNombre(), e.getClave());
			eb.setUsuario(e.getUsuario());
			eb.setIdEmpleado(e.getId());
		}
			
		if(e.getClass().getName().contains("Mozo")){
			Mozo mozodto=(Mozo)e;
			eb=new MozoBean(e.getNombre(), e.getClave(),mozodto.getPorcentajeComision());
			eb.setUsuario(e.getUsuario());
			eb.setIdEmpleado(e.getId());
		}	
		return eb;
	}
	
	public Empleado transformBeantoModel(EmpleadoBean eBean){
		Empleado e=null;
		if(eBean.getClass().getName().contains("AdministrativoBean")){
			e=new Administrativo(eBean.getNombre(), eBean.getClave());
			e.setUsuario(eBean.getUsuario());
			e.setId(eBean.getIdEmpleado());
		}
			
		if(eBean.getClass().getName().contains("EncargadoBean")){
			e=new Encargado(eBean.getNombre(), eBean.getClave());
			e.setUsuario(eBean.getUsuario());
			e.setId(eBean.getIdEmpleado());
		}
			
		if(eBean.getClass().getName().contains("MozoBean")){
			MozoBean mozodto=(MozoBean)eBean;
			e=new Mozo(eBean.getNombre(), eBean.getClave(),mozodto.getPorcentajeComision());
			e.setUsuario(eBean.getUsuario());
			e.setId(eBean.getIdEmpleado());
		}	
		return e;
	}

	public Mozo buscarMozoPorUsuario(String user1) {
		MozoBean mozob=new MozoBean();
		mozob.setNombre(user1);
		mozob=(MozoBean) HibernateEmpleadoDAO.getInstancia().buscarMozoPorUsuario(mozob);
		if(mozob!=null)
			return (Mozo) transformBeantoModel(mozob);
		else
			return null;
	}

	public Encargado buscarEncargadoPorUsuario(String user1) {
		EncargadoBean encargadob=new EncargadoBean();
		encargadob.setNombre(user1);
		encargadob=(EncargadoBean) HibernateEmpleadoDAO.getInstancia().buscarEncargadoPorUsuario(encargadob);
		if(encargadob!=null)
			return (Encargado) transformBeantoModel(encargadob);
		else
			return null;
	}

	public Administrativo buscarAdministrativoPorUsuario(String user1) {
		AdministrativoBean administrativob=new AdministrativoBean();
		administrativob.setNombre(user1);
		administrativob=(AdministrativoBean) HibernateEmpleadoDAO.getInstancia().buscarAdministrativoPorUsuario(administrativob);
		if(administrativob!=null)
			return (Administrativo) transformBeantoModel(administrativob);
		else
			return null;
	}

	public int buscarNroSucursalPorMozo(Mozo mozo) {
		int nro=HibernateEmpleadoDAO.getInstancia().buscarNroSucursalPorMozo(this.transformModeltoBean(mozo));
		return nro;
	}

	public int buscarNroSucursalPorAdministrativo(Administrativo administrativo) {
		int nro=HibernateEmpleadoDAO.getInstancia().buscarNroSucursalPorAdministrativo(this.transformModeltoBean(administrativo));
		return nro;
	}

	public int buscarNroSucursalPorEncargado(Encargado encargado) {
		int nro=HibernateEmpleadoDAO.getInstancia().buscarNroSucursalPorEncargado(this.transformModeltoBean(encargado));
		return nro;
	}
	
}
